package com.lzc.jobrecomendbackend.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 薪资解析工具类
 */
public class SalaryParser {

    // 匹配薪资范围的正则表达式，如"15k-25k"、"15-25k"、"15k-25"等格式
    private static final Pattern SALARY_PATTERN = Pattern.compile("(\\d+(?:\\.\\d+)?)[kK]?[\\-～]+(\\d+(?:\\.\\d+)?)[kK]");
    
    // 匹配年薪的正则表达式，如"15-25万/年"
    private static final Pattern ANNUAL_SALARY_PATTERN = Pattern.compile("(\\d+(?:\\.\\d+)?)[\\-～]+(\\d+(?:\\.\\d+)?)万/年");
    
    /**
     * 解析薪资字符串，返回最低和最高薪资（单位：k）
     * 
     * @param salaryStr 薪资字符串，如"15k-25k"、"15-25万/年"等
     * @return 包含最低和最高薪资的数组，如果解析失败则返回null
     */
    public static Double[] parseSalary(String salaryStr) {
        if (salaryStr == null || salaryStr.isEmpty()) {
            return null;
        }
        
        // 尝试匹配月薪格式
        Matcher matcher = SALARY_PATTERN.matcher(salaryStr);
        if (matcher.find()) {
            try {
                double min = Double.parseDouble(matcher.group(1));
                double max = Double.parseDouble(matcher.group(2));
                return new Double[] {min, max};
            } catch (NumberFormatException e) {
                return null;
            }
        }
        
        // 尝试匹配年薪格式，转换为月薪（除以12）
        matcher = ANNUAL_SALARY_PATTERN.matcher(salaryStr);
        if (matcher.find()) {
            try {
                double min = Double.parseDouble(matcher.group(1)) * 10 / 12; // 万/年 转为 k/月
                double max = Double.parseDouble(matcher.group(2)) * 10 / 12;
                return new Double[] {min, max};
            } catch (NumberFormatException e) {
                return null;
            }
        }
        
        return null;
    }
} 